package edu.pe.cayetano.view.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.RowSetDynaClass;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.model.bo.CursoBO;
import edu.pe.cayetano.model.to.UsuarioTO;
import edu.pe.cayetano.seccd.constantes.ConstantesMensajes;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.seccd.constantes.ConstantesSession;
import edu.pe.cayetano.util.EscribeLog;
import edu.pe.cayetano.util.UtilitarioSession;

public class CursoAction extends BaseAction{

	private String page	= ConstantesSECCD.EXITO;
	
	/**
	 * Metodo para listar los cursos
	 * */
	public ActionForward listar(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult			ret			= new BResult();
		CursoBO			cursoBO 	= new CursoBO();
		try {
			HttpSession session = request.getSession(false);
			ret = cursoBO.listarCursos();
			if(ret.getCode()==0 && ret.getObject()!=null){
				page=ConstantesSECCD.EXITO;
				UtilitarioSession.eliminaParametrosBusquedaGenerico(session);
				UtilitarioSession.seteaParametrosListadoGenerico(session,(RowSetDynaClass)ret.getObject());
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CursoAction","listar",ConstantesSECCD.ERROR,ret.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_PERACADEMICO_LISTAR,new String[0],"home.do","home");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CursoAction","listar",ConstantesSECCD.ERROR,ret.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_PERACADEMICO_LISTAR,new String[0],"home.do","home");
		}
		return mapping.findForward(page);	
	}
	
	/**
	 * Listar los cursos matriculados por un alumno en el periodo academico vigente 
	 * */
	public ActionForward listarCursosAlumno(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult			retSalida	= new BResult();
		CursoBO			cursoBO 	= new CursoBO();
		try {
			HttpSession session = request.getSession(false);
			String codigoAlumno = ((UsuarioTO)session.getAttribute(ConstantesSession.USUARIO_LOGEADO)).getCodigoAlumno(); 
			retSalida = cursoBO.listarCursosAlumno(codigoAlumno);
			if(retSalida.getCode()==0 && retSalida.getObject()!=null){
				page=ConstantesSECCD.EXITO;
				UtilitarioSession.eliminaParametrosBusquedaGenerico(session);
				UtilitarioSession.seteaParametrosListadoGenerico(session,(RowSetDynaClass)retSalida.getObject());
			}else{
				page=ConstantesSECCD.ERROR;
				EscribeLog.escribeLog("CursoAction","listarCursosAlumno",ConstantesSECCD.ERROR,retSalida.getMessage());
				mostrarMensaje(request,ConstantesMensajes.ERROR_CURSOS_ALUMNO_LISTAR,new String[0],"home.do","home");
			}
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CursoAction","listarCursosAlumno",ConstantesSECCD.ERROR,retSalida.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_CURSOS_ALUMNO_LISTAR,new String[0],"home.do","home");
		}
		return mapping.findForward(page);	
	}
	
	/**
	 * 
	 * */
	public ActionForward verNotasAlumno(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
		BResult			retSalida	= new BResult();
		try {
			HttpSession session = request.getSession(false);
		}catch (Exception e) {
			page=ConstantesSECCD.ERROR;
			EscribeLog.escribeLog("CursoAction","verNotasAlumno",ConstantesSECCD.ERROR,retSalida.getMessage());
			mostrarMensaje(request,ConstantesMensajes.ERROR_CURSOS_ALUMNO_LISTAR,new String[0],"home.do","home");
		}
		return mapping.findForward(page);	
	}
}
